﻿Imports TransportadoraToledoDAL
Public Class RotasBLL
    Dim objDAL As RotasDAL
#Region "Propriedades"
    Private codigo As Integer
    Public Property pCodigo() As Integer
        Get
            Return codigo
        End Get
        Set(ByVal value As Integer)
            codigo = value
        End Set
    End Property
    Private cidade_origem As Integer
    Public Property pCidade_origem() As Integer
        Get
            Return cidade_origem
        End Get
        Set(ByVal value As Integer)
            cidade_origem = value
        End Set
    End Property
    Private cidade_destino As Integer
    Public Property pCidade_destino() As Integer
        Get
            Return cidade_destino
        End Get
        Set(ByVal value As Integer)
            cidade_destino = value
        End Set
    End Property
    Private distancia As Double
    Public Property pDistancia() As Double
        Get
            Return distancia
        End Get
        Set(ByVal value As Double)
            distancia = value
        End Set
    End Property
    Private descricao As String
    Public Property pDescricao() As String
        Get
            Return descricao
        End Get
        Set(ByVal value As String)
            descricao = value
        End Set
    End Property
    Private ativa As Boolean
    Public Property pAtiva() As Boolean
        Get
            Return ativa
        End Get
        Set(ByVal value As Boolean)
            ativa = value
        End Set
    End Property
#End Region

    Sub New()

    End Sub

    Sub limpar()
        pCodigo = 0
        pCidade_origem = 0
        pCidade_destino = 0
        pDistancia = 0
        pDescricao = ""
        pAtiva = 0
    End Sub

    Sub inserir()
        Dim objDAL As New RotasDAL
        Try
            If (cidade_origem <= 0) Then
                Throw New Exception("Cidade de origem não definida.")
            End If
            If (cidade_destino <= 0) Then
                Throw New Exception("Cidade de destino não definida.")
            End If
            pCodigo = objDAL.inserir(cidade_origem, cidade_destino, distancia, descricao)
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
    End Sub

    Sub alterar()
        Dim objDAL As New RotasDAL
        Try
            If (codigo <= 0) Then
                Throw New Exception("Rota não definida.")
            End If
            objDAL.alterar(codigo, descricao, ativa)
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
    End Sub

    Sub excluir()
        Dim objDAL As New RotasDAL
        Try
            If (codigo = 0) Then
                Throw New Exception("Rota não definida.")
            End If
            objDAL.excluir(codigo)
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
    End Sub

    Function localizarPrimeiroUltimo(ByVal nome As String) As Integer
        Dim tab As New DataTable
        Dim codigo As Integer = 0
        Try
            If (nome = "ultimo") Then
                objDAL = New RotasDAL
                tab = objDAL.localizar(nome)
                If (tab.Rows(0)("rot_codigo").ToString <> "") Then
                    codigo = tab.Rows(0)("rot_codigo").ToString
                End If
            ElseIf (nome = "primeiro") Then
                objDAL = New RotasDAL
                tab = objDAL.localizar(nome)
                If (tab.Rows(0)("rot_codigo").ToString <> "") Then
                    codigo = tab.Rows(0)("rot_codigo").ToString
                End If
            End If
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
        Return codigo
    End Function

    Function localizarProxAnterior(ByVal nome As String, ByVal codigo As Integer) As Integer
        Dim tab As New DataTable
        Dim CodigoP As Integer = 0
        Try

            objDAL = New RotasDAL
            tab = objDAL.localizarProxAnterior(nome, codigo)
            If (tab.Rows.Count > 0) Then
                CodigoP = tab.Rows(0)("rot_codigo").ToString
            End If
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
        Return CodigoP
    End Function

    Sub localizar(ByVal codigo As Integer)
        Dim tab As New DataTable
        Try
            objDAL = New RotasDAL
            tab = objDAL.localizar(codigo)
            If (tab.Rows.Count > 0) Then
                pCodigo = tab.Rows(0)("rot_codigo").ToString
                pCidade_origem = tab.Rows(0)("cid_origem").ToString
                pCidade_destino = tab.Rows(0)("cid_destino").ToString
                pDescricao = tab.Rows(0)("rot_descricao").ToString
                pDistancia = tab.Rows(0)("rot_distancia").ToString
                pAtiva = tab.Rows(0)("rot_ativa").ToString
            Else
                limpar()
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Function localizar(status As Boolean, campo As String, cidade As String) As DataTable
        objDAL = New RotasDAL
        Dim tab As New DataTable
        Try
            If (campo.Trim() = "") Then
                Throw New Exception("Erro na pesquisa." + vbNewLine + "Campo não especificado.")
            End If
            If (cidade.Trim() = "") Then
                Throw New Exception("Erro na pesquisa." + vbNewLine + "Cidade não especificada.")
            End If
            tab = objDAL.localizar(status, campo, cidade)
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
        Return tab
    End Function

    Function localizar(origem As String, destino As String, status As Boolean) As DataTable
        objDAL = New RotasDAL
        Dim tab As New DataTable
        Try
            If (origem.Trim() = "") Then
                Throw New Exception("Erro na pesquisa." + vbNewLine + "Cidade de origem não especificada.")
            End If
            If (destino.Trim() = "") Then
                Throw New Exception("Erro na pesquisa." + vbNewLine + "Cidade de destino não especificada.")
            End If
            tab = objDAL.localizar(origem, destino, status)
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
        Return tab
    End Function

    Function localizarCidade(estado As Integer, cidade As String) As DataTable
        objDAL = New RotasDAL
        Dim tab As New DataTable
        Try
            If (estado = 0) Then
                Throw New Exception("Estado não definido.")
            End If
            If (cidade.Trim() = "") Then
                Throw New Exception("Cidade não definida.")
            End If
            tab = objDAL.localizarCidade(estado, cidade)
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
        Return tab
    End Function

    Function localizarCidade(cidade As Integer) As String
        objDAL = New RotasDAL
        Dim tab As New DataTable
        Try
            If (cidade = 0) Then
                Throw New Exception("Cidade não especificada.")
            End If
            tab = objDAL.localizarCidade(cidade)
            If (tab.Rows.Count <> 1) Then
                Throw New Exception("Erro. Cidade não encontrada.")
            End If
        Catch ex As Exception
            Throw ex
        End Try
        objDAL = Nothing
        Return tab.Rows.Item(0)(0).ToString
    End Function

End Class
